


var express =require("express");
var router = express.Router();
var {Mvs,Prouser,Tiwen,Advise,Goods,Cart} = require("../utils/model")
var {createToken,checkToken} = require("../utils/token")
router.get("/test",(req,res)=>{
    res.json({
        code:200,
        msg:"测试接口 成功 successful "
    })
})  

router.get("/movie",(req,res)=>{
    var limit = req.query.limit *1 || 0
    Mvs.find({},{_id:0})
    .limit(limit)
    .sort({_id:-1})
    .then(result=>{
        res.json({
            code:200,
            msg:"成功",
            result
        })
    })
})

router.post("/login",(req,res)=>{
    var body = req.body;
    res.json({
        code:200,
        msg:"成功",
        body
    })
})


router.get("/gettoken",(req,res)=>{
    var token = createToken({})
    res.json({
        token:token,
        msg:"token success",
        type:1,
        code:200
    })
})

router.post("/signin",(req,res)=>{
    var body = req.body
    Prouser.findOne({
        mobile:body.mobile
    }).then(result=>{
        if(result){
            if(result.password == body.password){
                var token = createToken({
                    mobile:body.mobile,
                    password:body.password,
                    roleid:result.roleid
                })
                res.json({
                    code:200,
                    type:1,
                    msg:"登陆成功",
                    token
                })
            }else{
                res.json({
                    code:200,
                    type:0,
                    msg:"用户名或密码错误",

                })
            }
        }else{
            res.json({
                code:200,
                type:0,
                msg:"用户名或密码错误",

            })
        }
    })
})


router.post("/getuserinfo",(req,res)=>{
    checkToken(req,res,({mobile})=>{
        Prouser.findOne({
            mobile
        }).then(result=>{
            res.json({
                code:200,
                msg:"获取成功",
                type:1,
                result
            })
        })
    })
   
})

router.post("/adduser",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        var body = req.body;
        var addroleid = body.roleid;
        if(addroleid*1 > roleid*1){
            res.json({
                code:403,
                type:0,
                msg:"你权限不够,不能添加超管用户"
            })
        }else{
            // 添加用户
            Prouser.findOne({
                mobile:body.mobile
            }).then(data=>{
                if(data){
                    res.json({
                        code:402,
                        type:0,
                        msg:"手机号码已经存在,请确认数据"
                    })
                }else{
                    body.time = new Date();
                    Prouser.insertMany(body)
                    .then(result=>{
                        res.json({
                            code:200,
                            type:1,
                            result,
                            msg:"用户添加成功"
                        })
                    })
                }
            })
        }
    })
})

router.post("/getuserlist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Prouser.find({},{})
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"获取用户列表成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 根据_id 删除用户
router.post("/deluser",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Prouser.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"用户删除成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 


// 根据_id 修改用户
router.post("/updateuserone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        var body = {...req.body,time:new Date()}
        // delete body[_id];
        Prouser.updateMany({
            _id:req.body._id
        },{
            $set:body
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"用户修改成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 



// 提交体温记录
router.post("/addtiwen",(req,res)=>{
    const {
        tiwen 
    } = req.body;

    checkToken(req,res,({mobile,roleid})=>{
        Prouser.findOne({
            mobile,
        }).then(userinfo=>{
            Tiwen.insertMany({
                time:new Date(),
                mobile,
                username:userinfo.username,
                tiwen,
                ishei:"0",
                is_yin:"1"
            }).then(data=>{
                Tiwen.find({mobile},{})
                .sort({_id:-1})
                .then(result=>{
                    res.json({
                        code:200,
                        msg:"添加成功",
                        result,
                        type:1
                    })
                })
                .catch(err=>{
                    res.json({
                        code:500,
                        msg:"服务器异常",
                        err,
                        type:0
                    })
                })
            })
        })
    })

})

// 获取我的体温记录
router.post("/mytiwenlist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tiwen.find({
            mobile
        },{})
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"查询成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 根据_id 删除体温记录
router.post("/delOneList",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tiwen.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"删除成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 


// 根据_id 修改体温记录
router.post("/updatetiwenone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        var body = {...req.body,time:new Date()}
        // delete body[_id];
        Tiwen.updateMany({
            _id:req.body._id
        },{
            $set:body
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 

// 根据_id 修改是否检测 
router.post("/updateishei",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tiwen.updateMany({
            _id:req.body._id
        },{
            $set:{
                ishei:req.body.ishei
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 



// 根据_id 修改 核酸结果 
router.post("/updateisyin",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tiwen.updateMany({
            _id:req.body._id
        },{
            $set:{
                is_yin:req.body.is_yin
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 



// 获取首页的 banner
router.post("/gethomebanner",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        res.json({
            msg:"获取数据成功",
            code:200,
            type:1,
            result:[
                {
                    imgUrl:"http://47.104.209.44/base/img/1.jpg",
                    text:"万众一心,抗击肺炎"
                },
                {
                    imgUrl:"http://47.104.209.44/base/img/2.jpg",
                    text:"爱满春来。武汉加油！中国加油！"
                },
                {
                    imgUrl:"http://47.104.209.44/base/img/3.jpg",
                    text:"全党动员防疫情，人人都是安全员"
                },
                {
                    imgUrl:"http://47.104.209.44/base/img/4.jpg",
                    text:"万众一心众志成城科学防治战胜新型肺炎！"
                }
            ]
        })
    })
}) 




// 提交意见
router.post("/addadvise",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        console.log(req.body);
        Prouser.findOne({
            mobile,
        }).then(userinfo=>{
            Advise.insertMany({
                time:new Date(),
                mobile,
                username:userinfo.username,
                reply:[],
                ...req.body
            }).then(result=>{
                res.json({
                    code:200,
                    msg:"添加成功",
                    result,
                    type:1
                })    
            }).catch(err=>{
                res.json({
                    code:500,
                    msg:"服务器异常",
                    err,
                    type:0
                })
            })
        })
    })

})

// 获取意见列表  
router.post("/getadviselist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {}
        Advise.find(obj,{})
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"意见查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 根据_id 删除意见列表 
router.post("/delAdviseOne",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Advise.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"意见删除成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 


// 获取意见 
router.post("/getadvisebyid",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {
            _id:req.body._id
        }
        Advise.findOne(obj,{})
        .then(result=>{
            res.json({
                code:200,
                msg:"查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 修改意见 
router.post("/updateadvisebyid",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {
            _id:req.body._id
        }
        Advise.updateMany(obj,{
            $set:{
                time:new Date(),
                title:req.body.title,
                content:req.body.content,
                category:req.body.category
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 提交意见回复


router.post("/addreply",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var {_id,username,tips} = req.body;
        Advise.findOne({
            _id
        }).then(data=>{
            var reply = data.reply || [];
            console.log(reply);
            reply.push({
                author:username,
                mobile,
                roleid,
                tips,
                time:new Date(),
                id:reply.length
            })

            Advise.updateMany({
                _id,
            },{
                $set:{
                    reply
                }
            }).then(result=>{
                res.json({
                    code:200,
                    msg:"回复成功",
                    result,
                    type:1
                })    
            }).catch(err=>{
                res.json({
                    code:500,
                    msg:"服务器异常",
                    err,
                    type:0
                })
            })
        })
    })
})

// 商品列表 
router.post("/goodlist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {}
        var limit = req.body.limit || 0;
        Goods.find(obj,{})
        .limit(limit)
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"商品查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 商品分类去重
router.post("/goodtypelist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Goods.distinct("type")
        .then(result=>{
            res.json({
                code:200,
                msg:"商品分类查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 获取商品详情
router.post("/getgoodone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Goods.findOne({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"商品查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 添加商品到我的购物车

router.post("/addtocart",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        const {
            goodId,
            count
        } = req.body;
        var body = req.body;
        console.log(mobile)
        Cart.findOne({
            goodId,
        })
        .then(data=>{
            if(data){
                // count 累加 ++ 
                Cart.updateMany({
                    goodId
                },{
                    $set:{
                        time:new Date()
                    },
                    $inc:{
                        count:count *1 
                    }
                }).then(result=>{
                    res.json({
                        code:200,
                        msg:"添加商品成功",
                        result,
                        type:1
                    }) 
                }) 
            }else{
                // 直接新增 
                body.time = new Date();
                body.checked = false;
                body.mobile = mobile;
                console.log(body);
                Cart.insertMany(body)
                .then(result=>{
                    res.json({
                        code:200,
                        msg:"新增商品成功",
                        result,
                        type:1
                    }) 
                }) 
            }
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 根据 mobile 获取我的购物车信息 
router.post("/getmycart",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Cart.find({
            mobile
        })
        .sort({
            _id:-1
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 修改数量

router.post("/changecartcount",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var {_id,count} = req.body;
        Cart.updateMany({
            _id
        },{
            $set:{
                count:count*1
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"数量更新成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 修改选中 
router.post("/changecartcheck",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var {_id,checked} = req.body;
        var obj = {}
        if(_id){
            obj = {_id}
        }
        Cart.updateMany(obj,{
            $set:{
                checked:checked
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"更新成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 删除
router.post("/delcartone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Cart.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"删除成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 批量删除  判断选中 
router.post("/delcartcheck",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Cart.remove({
            mobile,
            checked:true
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"批量删除成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 商品列表 
router.post("/goodlist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {}
        var limit = req.body.limit || 0;
        Goods.find(obj,{})
        .limit(limit)
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"商品查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 商品分类去重
router.post("/goodtypelist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Goods.distinct("type")
        .then(result=>{
            res.json({
                code:200,
                msg:"商品分类查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 商品分类去重
router.post("/goodtypelist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Goods.distinct("type")
        .then(result=>{
            res.json({
                code:200,
                msg:"商品分类查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 获取商品详情
router.post("/getgoodone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Goods.findOne({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"商品查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 添加商品到我的购物车

router.post("/addtocart",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        const {
            goodId,
            count
        } = req.body;
        var body = req.body;
        console.log(mobile)
        Cart.findOne({
            goodId,
        })
        .then(data=>{
            if(data){
                // count 累加 ++ 
                Cart.updateMany({
                    goodId
                },{
                    $set:{
                        time:new Date()
                    },
                    $inc:{
                        count:count *1 
                    }
                }).then(result=>{
                    res.json({
                        code:200,
                        msg:"添加商品成功",
                        result,
                        type:1
                    }) 
                }) 
            }else{
                // 直接新增 
                body.time = new Date();
                body.checked = false;
                body.mobile = mobile;
                console.log(body);
                Cart.insertMany(body)
                .then(result=>{
                    res.json({
                        code:200,
                        msg:"新增商品成功",
                        result,
                        type:1
                    }) 
                }) 
            }
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 根据 mobile 获取我的购物车信息 
router.post("/getmycart",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Cart.find({
            mobile
        })
        .sort({
            _id:-1
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 修改数量

router.post("/changecartcount",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var {_id,count} = req.body;
        Cart.updateMany({
            _id
        },{
            $set:{
                count:count*1
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"数量更新成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 修改选中 
router.post("/changecartcheck",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var {_id,checked} = req.body;
        var obj = {}
        if(_id){
            obj = {_id}
        }
        Cart.updateMany(obj,{
            $set:{
                checked:checked
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"更新成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 删除
router.post("/delcartone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Cart.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"删除成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 批量删除  判断选中 
router.post("/delcartcheck",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Cart.remove({
            mobile,
            checked:true
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"批量删除成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})





module.exports = router;